/* *
 * 日期格式化
 * */

function padLeftZero(str) {
    return ('00' + str).substr(str.length)
}

function formater(date, fmt) {
    if (!date) return;
    date = new Date(+date) //支持直接传入时间戳()
    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }
    let o = {
        'M+': date.getMonth() + 1,
        'd+': date.getDate(),
        'H+': date.getHours(),
        'm+': date.getMinutes(),
        's+': date.getSeconds()
    }
    for (let k in o) {
        let str = o[k] + ''
        if (new RegExp(`(${k})`).test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
        }
    }
    return fmt
}

export default {
    install(Vue) {
        Object.defineProperty(Vue.prototype.$bui, 'formatDate', {
            value: formater
        })

        //格式化日期
        Vue.filter('date', time => {
            if(time){
                return formater(time, 'yyyy-MM-dd');
            }
        })
        //格式化日期时间
        Vue.filter('dateTime', (time,type='yyyy-MM-dd HH:mm') => {
            if(time){
                return formater(time, type);
            }
        })
    }
}
